package com.tjec.project.system.mapper;

import com.tjec.project.businessWorkbench.dto.BmsAttachmentDto;
import com.tjec.project.projectWorkbench.domain.BmsProject;
import com.tjec.project.system.domain.BmsAttachment;
import com.tjec.project.system.domain.vo.BmsAttachmentVo;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;
import java.util.List;

/**
 * 文件Mapper接口
 *
 * @author tjec
 * @date 2020-04-15
 */
public interface BmsAttachmentMapper {
    /**
     * 查询文件
     *
     * @param id 文件主键ID
     * @return 文件
     */
    public BmsAttachment selectBmsAttachmentByKey(String id);

    /**
     * 查询文件
     *
     * @param guid 文件ID
     * @return 文件
     */
    public BmsAttachment selectBmsAttachmentById(String guid);

    /**
     * 查询文件列表
     * 
     * @param bmsAttachment 文件
     * @return 文件集合
     */
    public List<BmsAttachment> selectBmsAttachmentList(BmsAttachment bmsAttachment);

    /**
     * 查询下载文件列表
     *
     * @param guids 文件guids
     * @param bizId    关联类目主表ID
     * @param category 附件类目
     * @return 文件集合
     */
    public List<BmsAttachmentVo> selectBmsAttachmentDownload(@Param("guids") String[] guids,@Param("bizId") String bizId, @Param("category") String category);
    
    /**
     * 查询下载文件列表
     *
     * @param guids 文件guids
     * @param bizId    关联类目主表ID
     * @param category 附件类目
     * @return 文件集合
     */
    public List<BmsAttachmentVo> selectBmsAttachmentDownloadNew(@Param("guids") String[] guids,@Param("bizId") String bizId, @Param("category") String category);
    
    /**
     * 新增文件
     * 
     * @param bmsAttachment 文件
     * @return 结果
     */
    public int insertBmsAttachment(BmsAttachment bmsAttachment);

    /**
     * 修改文件
     * 
     * @param bmsAttachment 文件
     * @return 结果
     */
    public int updateBmsAttachment(BmsAttachment bmsAttachment);

    /**
     * 删除文件
     * 
     * @param id 文件ID
     * @return 结果
     */
    public int deleteBmsAttachmentById(String id);

    /**
     * 批量删除文件
     *
     * @param guids 需要删除的数据ID
     * @return 结果
     */
    public int deleteBmsAttachmentByIds(String[] guids);

    /**
     * 批量逻辑删除文件
     * 
     * @param guids 附件表的biz_id
     * @return
     */
    public int updateBmsAttachmentByGuids(@Param("list")String[] guids, @Param("updateBy")String updateBy);

    /**
     * 批量删除文件
     *
     * @param guIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteBmsAttachmentByGuIds(String[] guIds);

    /**
     * 批量更新文件
     *
     * @param atmGuids 需要删除的数据ID
     * @return 结果
     */
    public  int updateBmsAttachmentByGuidsAddBizId(List<String> atmGuids,@Param("bizId")String bizId);
    /**
     * 批量删除文件
     *
     * @param guIds 需要删除的数据ID
     * @return 结果
     */
    public int updateBmsAttachmentByBizId(@Param("list")String[] guIds, @Param("updateBy")String updateBy);
    /**
     * 批量更新文件 更新bizid
     *
     * @param list 需要更新的guid集合  bizId 主表guid
     * @return 结果
     */
    public int updateBmsAttachmentByGuidsUpdateBiz(@Param("list")ArrayList<String> list,@Param("bizId")String bizId,@Param("category")String category, @Param("updateBy")String updateBy);

    /**
     * 逻辑删除文件
     *
     * @param guid 需要删除的数据biz_id
     * @return 结果
     */
    public int updateBmsAttachmentByGuid(@Param("guid")String guid, @Param("updateBy")String updateBy);
    
    public List<BmsAttachment> selectBmsAttachmentByBizId(String bizId);
    List<BmsAttachment> queryAttachmentByBizId(String guid);
    
    /**
     * 批量新增附件
     *
     * @param list 项目list
     * @return 结果
     */
    public int batchInsertAttachments(@Param("list") List<BmsAttachment> list);
    
    /**
     * 物理删除附件
     * @param bizId
     * @return
     */
    public int deleteBmsAttachmentByBizId(String bizId);
    
    
    /**
     * 查询文件
     *
     * @param id 文件主键ID
     * @return 文件
     */
    public List<BmsAttachmentDto> selectBmsAttachmentByBizIds(@Param("list")List<String> list);
    
    /**
     * 批量删除文件
     *
     * @param guIds 需要删除的数据ID
     * @return 结果
     */
    public int updateAttachmentStatusByBizId(@Param("list")List<String> list, @Param("archiveStatus")String archiveStatus);
    
    /**
     * 批量更新文件 更新bizid
     *
     * @param list 需要更新的guid集合  bizId 主表guid
     * @return 结果
     */
    public int updateBmsAttachmentArchive(@Param("list")ArrayList<String> list,@Param("bizId")String bizId,@Param("category")String category, @Param("updateBy")String updateBy);
    
    /**
     * 批量删除文件
     *
     * @param guIds 需要删除的数据ID
     * @return 结果
     */
    public int updateAttachmentStatusByGuid(@Param("list")List<String> list, @Param("archiveStatus")String archiveStatus);

    public List<BmsAttachment> selectBmsAttachmentByBizIdsModel(@Param("list")List<String> list);
    
    public List<BmsAttachment> selectAttachmentsByBizIds(String bizIds);

    
}
